今天要把用指令傳進來的資料寫進DB完成註冊,首先我們要在DB中創建一張Users的表
CREATE TABLE ironman.Users (
id INT auto_increment Primary key,
account varchar(100) NOT NULL,
password varchar(100) NOT NULL,
name varchar(100) NOT NULL
)
好的,我們現在先想一下註冊帳號的步驟是什麼
那我們開始實作第一步吧
先學學如何select資料吧
$user = DB::table('users')->where('account', $account)->first();
dd($user);
好,他回我null,表示說當$user === null時,我就可以把資料寫進資料庫
if($user === null){
// insert data
}
如何insert data呢
DB::table('users')->insert([
'account' => $account,
'password' => $password,
'username' => $name
]);
laravel有提供Hash::make來散列密碼
DB::table('users')->insert([
'account' => $account,
'password' => Hash::make($password),
'username' => $name
]);
OK...默默地寫完了,好我們來試著註冊看看吧
php artisan sign-up myaccount 23acCC_ yourname
成功了,可以再輸入一次試試看會怎樣,結果發現,重複註冊時,沒跳訊息XD
補一下
$account = $this->argument('account');
$password = $this->argument('password');
$username = $this->argument('username');
$validator = Validator::make(['password' => $password], [
'password' => 'regex:' . SignUp::PASSWORD_REGEX
]);
if ($validator->fails()) {
$this->error("密碼需要6位數以上,並且至少包含大寫字母、小寫字母、數字、符號各一");
return 1;
}
$user = DB::table('users')->where('account', $account)->first();
if($user !== null){
$this->error("帳號重複註冊");
return 1;
}
DB::table('users')->insert([
'account' => $account,
'password' => Hash::make($password),
'name' => $username
]);
return 0;
OK,完成啦,明天來做登入驗證!